﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//sprintf()
//原型：int sprintf ( char * str, const char * format, ... );
//将格式化的数据写入到str指向的字符数组中，与printf函数类似，但输出目标表示控制台和文件，而是用户指定的内存缓冲区。
//返回值：成功时，返回输入到str中的字符数，不包含结尾'\0';失败则返回负值
struct stu
{
	char name[20];
	int age;
	float score;
};
int main()
{
	struct stu s = { "zhangsan",20,95.5f };
	char str[100] = { 0 };
	int ret = sprintf(str, "%s %d %f", s.name, s.age, s.score);
	printf("%s\n", str);//"zhangsan 20 95.5"
	printf("%d\n", ret);//21
	return 0;
}

//sscanf()
//原型： int sscanf (const char * str, const char * format, ... );
//从字符串中读取格式化数据。它与scanf类似，但输⼊源是内存中的字符串⽽⾮控制台或⽂件。常⽤于解析字符串中的结构化数据（如提取数字、分割⽂本等）。
struct stu
{
	char name[20];
	int age;
	float score;
};
int main()
{
	char str[100] = "zhangsan 20 95.5";
	struct stu s;
	int ret = sscanf(str, "%s %d %f", s.name, &s.age, &s.score);
	printf("%s %d %f\n", s.name, s.age, s.score);
	printf("%d\n", ret);
	return 0;
}